package com.woniuxy.enums.redis.user;

/**
 * @author 饶志
 * @version 1.0
 * @since 2025-07-14  23:29
 */
public enum LikeRedisKeyEnum {

    /**
     * 用户点赞状态缓存（Hash类型）
     * <p>
     * key格式：like:status:{targetType}:{targetId}<br>
     * field: userId，value: 状态（1-已点赞，0-未点赞）
     * </p>
     */
    LIKE_STATUS("like:status:%s:%s"),

    /**
     * 目标点赞数缓存（String类型）
     * <p>
     * key格式：like:count:{targetType}:{targetId}<br>
     * key格式：like:count:{帖子/评论}:{对象Id}<br>
     * value: 点赞数（整数）
     * </p>
     */
    LIKE_COUNT("like:count:%s:%s"),

    /**
     * 点赞消息ID防重复消费，幂等性
     * <p>
     * key格式：like:queue:processed_msg:{消息ID}<br>
     * value: 1（已处理）
     * </p>
     */
    LIKE_QUEUE_PROCESSED_MSG_ID("like:queue:processed_msg:%s"),
    ;

    private final String keyPattern;

    LikeRedisKeyEnum(String keyPattern) {
        this.keyPattern = keyPattern;
    }

    // 生成具体的键(支持动态参数)
    public String format(Object... args) {
        return String.format(keyPattern, args);
    }
}
